Universal decoder for use in a network media player

ABSTRACT

A media player coupled to a network contains a processor, non-volatile memory, volatile memory, a driver, and input and output ports. The media player receives a media file over the network that contains an encoded media stream and a universal decoder. The player&#39;s processor converts or translates (or otherwise generates) the universal decoder into a player-specific decoder which may differ from the universal decoder. A library of routines stored in the non-volatile memory is used to create the player-specific decoder. The media stream downloaded to the media player may comprise audio, video, or any other desired type of media. In this manner, each media player can generate a decoder that differs, not only from the universal decoder, but may also differ from other media players thereby alleviating the burden on the media source from having to download the encoded media with a decoder specific to the target media player.

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] Not applicable.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

[0002] Not applicable.

BACKGROUND OF THE INVENTION

[0003] 1. Field of the Invention

[0004] The present invention generally relates to a universal downloadlanguage for use by a network appliance. More particularly still, theinvention relates to a universal language that can be received over theInternet and executed by a variety of audio appliances for playingencoded audio files.

[0005] 2. Background of the Invention

[0006] The proliferation of the Internet in recent years has alsogenerated the development of new technologies that take advantage of theInternet's world wide communication abilities. For example, audiostreaming has made it possible to use a computer to listen toInternet-based radio stations which are located anywhere in the world.Of course, using one's personal laptop or desktop computer system tolisten to music is acceptable, not always entirely the most satisfactorymeans for enjoying music. First, it requires the user to have acomputer. Although many people have computers, not everyone does.Second, even if a person has a computer, the computer must be on.Booting up a computer may take several minutes and thus may be anannoying process just to listen to music. Additionally, a person usinghis or her computer to listen to music is generally limited in terms ofwhere the music can be heard (i.e., in the general vicinity of thecomputer itself).

[0007] Because of these and other reasons, audio players have becomeavailable. By way of a definition, an “audio player” (also referred toas an audio “appliance”) is generally any device through which audio canbe heard. With this definition, a laptop or desktop computer could beconsidered an audio player. In addition to general purpose conventionalcomputer systems, audio players may also include equipment speciallydesigned to receive an audio file from a network and play it. Forexample, MP3 players can be downloaded with an MP3 encoded audio fileand played through a pair of headphones connected to the player. Theencoding process involves compressing the audio information so that asmaller, compressed file can be stored and transmitted over a networkrather than the original audio information.

[0008] It is common during the development of new technologies forcompeting implementations to be offered. Sometimes, one implementation“wins” out in the market place. During the infancy of the video cassetterecorder (“VCR”) development, VHS and BETA MAX formats were available,but in the end, VHS became the defacto standard. Other times, more thanone implementation survives and the market accommodates multipleimplementations.

[0009] At present in the Internet audio market, numerous differentencoding schemes are available to encode an audio file. The MP3 and AACstandards are two examples of such encoding schemes. Of course, once anaudio file is encoded, it must be decoded to be played. Further, theparticular decoding methodology must generally be the reciprocal processto how the file was encoded. Thus, if a song, for example, is encodedusing one particular encoding technique, it must be decoded using thatsame technique. Multiple encoding/decoding schemes complicates managing,downloading and playing encoded audio files. For a person to be able tolisten to a desired audio file encoded with a particular encodingscheme, that person's audio player must be capable of decoding the fileaccording to the encoding scheme used to encode the file in the firstplace. With multiple encoding schemes used by audio content providers,audio players conceivably would have to implement all of the variousdecoding schemes to be able to provide the person the ability to listento all possible audio content. Currently, there are approximately nineencoding/decoding schemes and thus an audio player would have to includeall nine schemes and enough memory to store all such decoders. As moreencoding/decoding schemes become available, this burden on the playersincreases.

[0010] Further complicating matters is the fact that more than oneoff-the-shelf hardware platform is available for suppliers to include intheir audio players. Currently, Texas Instruments, Cirrus Logic andpossibly others provide a chip set that designed for audio players todecode and play audio files. All else being equal, each audio file mayhave to be encoded differently to work on each such hardware platform.In other words, an audio file encoded for a Texas Instruments hardwareplatform may not work on a Cirrus Logic hardware platform, and viceversa.

[0011] Thus, with multiple encoding/decoding formats and multiplehardware platforms, managing and providing an efficient audiodistribution scheme can be complicated indeed. Each song may need to beencoded multiple different ways to be accessible and usable by audioplayers with different decoding algorithms programmed into them.Alternatively, audio players may have to be programmed with all possibledecoding algorithms. Even then, a problem arises as to what to do withexisting audio players when new encoding/decoding schemes becomeavailable. In short, this area is in dire need for an improvement thatsolves this problem. Despite the advantage such a solution wouldprovide, to date no such solution is known to exist.

BRIEF SUMMARY OF THE INVENTION

[0012] The present invention solves the deficiencies of the prior art bya media player coupled to a network. The media player contains aprocessor, non-volatile memory, volatile memory, a driver, and input andoutput ports. The media player can receive media files from the networkwith each file containing an encoded media stream and a universaldecoder. Executing interpreter software stored in non-volatile memory,the player's processor converts or translates (or otherwise generates)the universal decoder into a player-specific decoder, which may differfrom the universal decoder. A library of routines stored in thenon-volatile memory is used to create the player-specific decoder. Themedia stream downloaded to the media player may comprise audio, video,or any other desired type of media. As such, the media player maycomprise an audio player, a video player and the like.

[0013] In this manner, each media player can generate a decoder thatdiffers, not only from the universal decoder, but may also differ fromother media players. This alleviates the burden on the source of themedia on the network from having to download the encoded media with adecoder specific to the target media player. These and other aspects ofthe present invention will become apparent upon analyzing the drawings,detailed description and claims, which follow.

BRIEF DESCRIPTION OF THE DRAWINGS

[0014] For a detailed description of the preferred embodiments of theinvention, reference will now be made to the accompanying drawings inwhich:

[0015]FIG. 1 is a block diagram of a network media player constructed inaccordance with a preferred embodiment of the invention.

NOTATION AND NOMENCLATURE

[0016] Certain terms are used throughout the following description andclaims to refer to particular system components. As one skilled in theart will appreciate, processor and computer companies may refer to acomponent and sub-components by different names. This document does notintend to distinguish between components that differ in name but notfunction. In the following discussion and in the claims, the terms“including” and “comprising” are used in an open-ended fashion, and thusshould be interpreted to mean “including, but not limited to . . . ”.Also, the term “couple” or “couples” is intended to mean either a director indirect electrical connection. Thus, if a first device couples to asecond device, that connection may be through a direct electricalconnection, or through an indirect electrical connection via otherdevices and connections. To the extent that any term is not speciallydefined in this specification, the intent is that the term is to begiven its plain and ordinary meaning.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0017] In accordance with a preferred embodiment of the invention, amedia file containing encoded media information is transmitted from anetwork location to a media player coupled to a network, or otherwiseprovided to the media player. The media file preferably includes auniversal decoder that the network media player uses to decode theencoded media information. The encoded media downloaded to the mediaplayer may include an audio stream, video stream, a combination of audioand video, or any other type of media information.

[0018] Referring now to FIG. 1, the present invention, constructed inaccordance with the preferred embodiment, comprises a media player 100which can be coupled to a network 80. Network 80 may be the Internet, orany type of local or wide area network. The communication link betweennetwork 80 and the media player 100 may be a physical link (e.g.,telephone line, cable, etc.) or a wireless link. As shown, audio player100 comprises a processor 110, a read only memory (“ROM”) or other typeof non-volatile memory 120, a volatile memory 130, an output driver 140,an input port 140, and an output port 152. Other components may beincluded as well, such as user controls, status indicators, a display,and a battery. Preferably, the processor 110 couples to the ROM 120,memory 130 and input port 150 via separate connections as shown, or oneor more common busses if desired. The output driver 140 is shown coupledto the memory 130. Alternatively, the driver 140 may be coupled to theprocessor 110, instead of to the memory 130.

[0019] The particular components selected to implement the media player100 of FIG. 1 can be any suitable components. If the media player 100 isintended to provide an audio function, the output driver 140 preferablyincludes an audio driver. As such, the audio driver 140 would include adigital-to-analog converter, amplifier and filtering circuitry togenerate audio electrical signals. These signals are provided to theoutput port 152 which may include connections to a pair of speakers orheadphones. Further still, one or more speakers can be included as partof the media player 100 itself in place of, or in addition to, outputport 152. In the context of a video player, the driver 140 would be avideo driver and the output port 152 would be a connection to a displaydevice such as a video monitor using, e.g., the NTSC standard.

[0020] Referring still to FIG. 1, processor 110 executes software thatpreferably is stored in ROM 120 and transferred to non-volatile memory130 for execution therefrom. Alternatively, the software can be executeddirectly from ROM 120 without being transferred to memory 130. At leastone software application that is executed by processor 110 is aninterpreter application 122. A library of routines 124 is also providedfor use while executing interpreter 122. As will be explained below,such software is used to decode encoded media in accordance with auniversally understood decoder.

[0021] An encoded media file 90 that is located on the network 80 isdownloaded to the media player 100. The player 100 decodes the mediafile for presentation to a user. In accordance with a preferredembodiment of the invention, the media file 90 includes a universaldecoder 92 appended to the file or otherwise included as part of thefile. The media file 90 also includes an encoded media portion 94. Asnoted above, the encoded media portion 94 may comprise encoded audioand, as such, may be encoded according to any encoding algorithmsuitable for audio such as MP3, AAC, and the like, now known or laterdeveloped. Such encoding algorithms preferably compress the data so thatthe information can be represented in fewer bytes of memory.Alternatively, the media file and universal decoder may reside onstorage medium local to the player 100, such as a CD ROM, flash card, orROM card.

[0022] The universal decoder 92 comprises information that the mediaplayer 100 uses to decode the encoded media 94. The interpreter software122 executed by processor 110 in each media player 100 is written tounderstand the information provided in the universal decoder 92 andgenerate a player-specific decoder 132 which is written to memory 130.Accordingly, the universal decoder 92 can be executed by any mediaplayer regardless of model, manufacturer and the like as long as themedia player includes an interpreter capable of reading andunderstanding the language of the universal decoder 92.

[0023] The universal decoder 92 can be implemented in a variety of ways.For example, the decoder may comprise a text script of commands orinstructions in accordance with a predetermined syntax that theinterpreter 122 of the media players 100 are programmed or otherwisedesigned to understand. For example, it may be necessary in the decodingprocess to perform a Fast Fourier Transform (“FFT”) operation or aninverse Discrete Fourier Transform (“DFT”). Accordingly, the universaldecoder 92 may include an instruction for performing, for example, anFFT function in accordance with universally understood syntax. The mediaplayer's processor 110 executes interpreter software 122 stored in ROM122 in conjunction with various library routines 124 also stored in ROM120 to generate a player-specific or unique decoder 132 and writes theplayer specific decoder 132 to memory 130.

[0024] The library routines 124 may comprise player-specific low levelinstructions which processor 110 executes to implement the instructionsprovided in the universal decoder 92. For example, in response to thedecoder 92 requesting an FFT function to be performed, the interpreter122 may call upon a particular FFT routine in the library 124 to performthe FFT function. In general, the library routines can comprise anywell-known or custom designed algorithms that implement operationsuseful in decoding media information that has been encoded. As such, thelibrary routines 124 are specific to the type of media being decoded(e.g., audio, video). Each manufacturer's library routines may bedifferent than those provided by other manufacturers and, in general,are specific to the hardware components chosen to implement the mediaplayer 100. The designer of the decoder 92 may not know, or even care,how the FFT function is performed by the media player 100. Thus, eachmedia player 100 can implement a function (e.g., FFT) in any suitablemanner and universal decoder 92 will work satisfactorily with all suchmedia players. It should be noted also that the universal decoder mayinclude well-known parameters such as Huffman codes, filterbankcoefficients and size parameters which provide guidance to the mediaplayer to construct a media-player specific decoder.

[0025] The processor 110 receives the encoded media 94 from the network80 and preferably copies the encoded media 94 to memory 130 (representedas encoded media portion 134). Executing interpreter 122 in conjunctionwith library 124, the processor 110 translates or otherwise converts theuniversal decoder 92 to a player-specific decoder 132. Theplayer-specific decoder 134 performs the same or similar functions tothe universal decoder 92, but is specific to the particular media player100. As such, although based on the same universal decoder, theplayer-specific decoder 132 may differ between different media players.

[0026] During or after the processor 110 generates the player-specificdecoder 132, the processor stores that decoder in memory 130. Oncecreated, the processor 110 executes the player-specific decoder 132 todecode the encoded media portion 134. The resulting decoded mediapreferably is also stored in memory 130 in decoded media buffer 136.

[0027] After the processor 110 completes the creation of the decodedmedia 136 using the player-specific decoder 132, output driver 140retrieves the decoded media 136 from memory 130 and converts the decodedmedia 136 to suitable electrical signals to be provided to output port152. Alternatively, encoded media 94 may be decoded and provided tooutput driver 140 without being stored in memory at all. Through outputport 152, the decoded media 136 can be listened to (in the case ofaudio), viewed (in the case of video), or both (in the case of video andaudio) by an output device (e.g., speakers, headphones, video monitor,etc.). In alternative embodiment, driver 140 can begin retrievingdecoded media 136 and generating suitable electrical signals therefrombefore the processor 110 has completed decoding the encoded media 134.In this embodiment, for example, after the processor 10 has created andstored some decoded media data in buffer 136, the driver 140 can bebegin retrieving and playing such data, while the processor 110continues storing more decoded data in buffer 136.

[0028] As discussed above, the media player 100 is capable of receivingan encoded media stream with a universal decoder that the media playeruses to create its own media player specific decoder. Using thisplayer-specific decoder, the media player decodes the downloaded mediaand plays the decoded information at a user's request.

[0029] The above discussion is meant to be illustrative of theprinciples and various embodiments of the present invention. Numerousvariations and modifications will become apparent to those skilled inthe art once the above disclosure is fully appreciated. It is intendedthat the following claims be interpreted to embrace all such variationsand modifications.

What is claimed is:
 1. A media player which can be coupled to a network,comprising: a processor; an input port coupled to said processor whichreceives encoded media and a universal decoder; and a driver coupled tosaid memory which provides decoded media to an output device; saidprocessor generates a player-specific decoder based on said universaldecoder, said player-specific decoder used to decode said encoded media.2. The media player of claim 1, wherein said encoded media comprisesencoded audio and said driver generates audio electrical signals basedon said decoded media.
 3. The media player of claim 1, wherein saidencoded media comprises encoded video and said driver generates videoelectrical signals based on said decoded media.
 4. The media player ofclaim 1, wherein said encoded media comprises encoded audio and videoand said driver generates video electrical signals based on said decodedmedia.
 5. The media player of claim 1 further including a library ofroutines executable by said processor, said processor uses said libraryof routines to generate a player-specific decoder.
 6. The media playerof claim 1 further including memory coupled to said processor in whichsaid processor stores said player-specific decoder.
 7. The media playerof claim 1 further including memory coupled to said processor in whichsaid processor stores the decoded media.
 8. The media player of claim 7wherein said driver retrieves said decoded media from said memory. 9.The media player of claim 1 further including a read only memory andinterpreter software executable by said processor which, when executed,causes said processor to generate the player-specific decoder, saidinterpreter software stored in said read only memory.
 10. The mediaplayer of claim 9 further including a library of routines stored in saidread only memory and executable by said processor, said processor usessaid library of routines to generate a player-specific decoder.
 11. Amethod of providing a media stream to a user of a media player,comprising: (a) receiving an encoded media stream; (b) receiving auniversal decoder associated with said encoded media stream; (c)converting said universal decoder to a media player-specific format; and(d) using said player-specific decoder to decode said encoded mediastream.
 12. The method of claim 11 wherein said encoded media streamcomprises encoded audio.
 13. The method of claim 11 wherein said encodedmedia stream comprises encoded video.
 14. The method of claim 11 whereinsaid encoded media stream comprises encoded audio and video.
 15. Themethod of claim 11 wherein (c) includes using a library of routines. 16.The method of claim 11 wherein the encoded media stream and universaldecoder are received over a network.
 17. The method of claim 11 whereinthe encoded media stream and universal decoder are received over theInternet.
 18. The method of claim 11 wherein the encoded media streamand universal decoder are received from a storage medium.
 19. The methodof claim 11 further including generating electrical signals indicativeof said decoded media stream.
 20. The method of claim 19 wherein saidelectrical signals represent audio and are provided to an audio outputdevice.
 21. The method of claim 19 wherein said electrical signalsrepresent video and are provided to a video output device.
 22. A methodof providing a media stream to a user of a media player, comprising: (a)receiving an encoded media stream from a network; (b) receiving auniversal decoder associated with said encoded media stream from thenetwork; (c) translating said universal decoder to a player-specificformat that is different from the universal decoder; (d) using a libraryof decoding routines in (c); (e) using said player-specific decoder todecode said encoded media stream; (f) generating electrical signalsrepresentative of said decoded media stream; and (g) providing saidelectrical signals to an output device.
 23. The method of claim 22wherein said media stream comprises audio.
 24. The method of claim 22wherein said media stream comprises video.
 25. The method of claim 22wherein said media stream comprises audio and video.
 26. The method ofclaim 22 wherein network comprises the Internet.
 27. A media playerwhich can be coupled to a network, comprising: an input port whichreceives an encoded media stream and a universal decoder; a means forgenerating a player-specific decoder based on said universal decoder,said player-specific decoder used to decode said encoded media stream;and a means for providing decoded media to an output device.
 28. A mediaplayer coupled to a network, comprising: a processor; an input portcoupled to said processor which receives encoded media and a universaldecoder; a read only memory coupled to and readable by processorcontaining interpreter software and a library of routines executable bysaid processor; a volatile memory coupled to said processor; an outputport; and a driver coupled to said memory which provides decoded mediato said output device; wherein said processor executes said interpretersoftware and said library of routines to generate a player-specificdecoder based on said universal decoder, said player-specific decoderstored in said volatile memory and used to decode said encoded media;and wherein said decoded media is stored in said volatile memory.
 29. Amedia system, comprising: a network containing a file which includes anencoded media stream and a universal decoder; and a media player coupledto said network and comprising: a processor; and an input port coupledto said processor which receives said file; wherein said processor usesa library of routines to translate said universal decoder into aplayer-specific decoder, said player-specific decoder used to decodesaid encoded media.
 30. The media system of claim 29 wherein said mediastream comprises audio.
 31. The media system of claim 29 wherein saidmedia stream comprises video.
 32. A method of providing a media streamto a user of a media player, comprising: receiving an encoded mediastream; receiving a decoder associated with said encoded media stream;using said decoder to decode said encoded media stream.